Modern computers are no longer restricted to the software applications residing on their local disks. The Internet provides access to numerous applications and distributed applications hosted on remote servers or data centers. These remotely accessible distributed applications, commonly referred to as web-scale applications or Internet services, open an entire world of processing resources and unique applications to a user through the World Wide Web (the Web). A plethora of distributed applications currently exist for numerous actions, such as checking the price of the stock quote, retrieving driving directions to and from destinations, or managing profiles on social networks. Thus, the evolution of the software of a service (SaaS) business model is luring complicated software off of the typical computer and onto the Web.
While distributed applications may be easier to deploy because they can be hosted on a remote server, maintenance of distributed applications can be a difficult task. A distributed application typically has to run 24 hours a day, 7 days a week, and be available to a multitude of users. Some distributed applications (such as a program for loading digital photographs into a profile of a social network) may constantly change, and changes need to be propagated throughout all components of the distributed application. Also, because distributed applications are software, new functionality may be introduced and software failures with bugs are inevitable. Therefore, it will be necessary to roll out new versions of distributed application to fix errors (e.g., security vulnerabilities) or improve the functions offered by the distributed application. In both cases, it is often necessary to stop and then restart potentially each and every one of the software components of the distributed application or risk interruption and unavailability of the distributed application.